package com.gskj.eduorder.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.gskj.commonutils.ResultJson;
import com.gskj.eduorder.entity.Order;
import com.gskj.eduorder.service.IPayLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * <p>
 * 支付日志表 前端控制器
 * </p>
 *
 * @author Connor
 * @since 2020-08-17
 */
@RestController
@RequestMapping("/eduorder/paylog")
@CrossOrigin
@Slf4j
public class PayLogController {

    @Autowired
    private IPayLogService payLogService;


    /***
     *  生成 二维码地址 url ，
     * @param orderNo
     * @return
     */
    @GetMapping("/get/qrutl/{orderNo}")
    public ResultJson createQRCodeUrl(@PathVariable("orderNo") String orderNo) {

        // 1. 生成二维码 地址， 该地址 携带了二维码信息、一些其他的信息
        Map<String, Object> map = payLogService.createQRCodeUrl(orderNo);

        log.info("生成微信二维码地址: ======" + map);
        // 2. 将生成二维码地址返回
        return ResultJson.success().data(map);
    }

    /***
     *  根据订单号，查询当前支付状态。并将支付状态保存 到 payloh日志表中
     * @param orderNo
     * @return
     */
    @GetMapping("/check/paystate/{orderNo}")
    public ResultJson checkPayState(@PathVariable("orderNo") String orderNo) {

        // 1. 根据订单号 查询 订单支付状态
        Map<String, String> stateMap = payLogService.checkPayState(orderNo);

        log.info("查询订单章台 :========= " + stateMap);
        // 2.根据返回map ，判断是否支付成功
        if (stateMap == null) {
            return ResultJson.error().data("message", "支付失败");
        }
        if (stateMap.get("trade_state").equals("SUCCESS")) {
            // 支付成功，将支持记录保存到 paylog中，
            // 并将 当前订单号的 支付状态 修改为 已支付(1)
            payLogService.updateOrderStatus(stateMap);

            return ResultJson.success().data("message", "支付成功");
        }
        // 支付中 状态码 25000
        return ResultJson.success().code(25000).data("message", "支付中");
    }

}

